///////////////////////////////////////////////////////////////////////////////
// 计算一个正整数在二、十进制层面有多少位？
//
//  假设: val = 12, 其二进制表示为: 000 000 000 1100
//      因此其十进制位为2位，二进制位为4位
//                                                       Author: Xian Yang
//                                                     Date Time: 2023.11.26
///////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

int main(int argc, char** argv) {
    // 1. 二进制层面
    unsigned int val;
    scanf("%d", &val);

    if (val == 0) {
        printf("num bits = 0\n");
        return 0;
    }

    // unsigned int num_bits = 1;
    // while (val >>= 1 > 0) {
    //     num_bits++;
    // }
    // printf("num bits = %d\n", num_bits);

    // 2. 十进制层面
    unsigned int num_dec = 1;
    while ((val /= 10) > 0) {
        num_dec++;
    }
    printf("num dec = %d\n", num_dec);

    return 0;
}